package com.shrct.businessprocess.purchase;

import com.shrct.businessprocess.product.RCProductEntry;
import com.shrct.businessprocess.product.RCProductSpecification;
import com.shrct.businessprocess.purchase.RCProductDeliver;
import com.shrct.businessprocess.purchase.impl.RCProductDeliverItemImpl;
import com.shrct.businessprocess.purchase.proxy.RCProductDeliverItemProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Date;

@EntityImplementation(implementBy = RCProductDeliverItemImpl.class)
public interface RCProductDeliverItem extends IModelObject {
  public abstract RCProductDeliver getDeliver();
  
  public abstract RCProductDeliverItem setDeliver(final RCProductDeliver deliver);
  
  public abstract RCProductEntry getProduct();
  
  public abstract RCProductDeliverItem setProduct(final RCProductEntry product);
  
  public abstract Date getDate();
  
  public abstract RCProductDeliverItem setDate(final Date date);
  
  public abstract Integer getQuantity();
  
  public abstract void performDeliver(final Date deliverDate);
  
  public abstract void cancelDeliver();
  
  public abstract Integer getDeliveredQuantity();
  
  public abstract RCProductSpecification getProductSpec();
  
  public abstract RCProductDeliverItemProxy toProxy();
}
